package cn.tedu.scalafunction

/**
 * @author Amos
 * @date 2022/5/17
 */

object Method {

  // 定义方法求a b的和
  // 返回类型可以省略，会根据返回值自动推断
  // scala中可以省略return，默认最后一行就是返回的结果
  // 方法体中如果只有一条语句，{}可以省略
  def sum(a: Int, b: Int) = a + b

  // 定义递归方法，完成阶乘的计算
  def getFactorial(n: Int): Int = {
    if (n == 1) n else n * getFactorial(n - 1)
  }

  // 1)默认参数,默认值一般放在最后
  def getUserInfo(name: String, address: String, age: Int = 22) = {
    println(s"${name},今年${age},来自于${address}")
  }

  // 3) 可变参数
  def getSum2(nums: Int*) = nums.sum


  def main(args: Array[String]): Unit = {
    println(sum(3, 7))
    // 调用没有参数的方法的时候，()可以省略
    sayHello

    // 方法如果没有返回值，=可以省略
    def sayHello() {
      println("hello world")
    }

    // 调用递归
    println(getFactorial(5))

    // 调用默认参数
    getUserInfo("张同学", "吉林", 30)
    getUserInfo("赵同学", "四川成都")

    // 调用指定参数
    getUserInfo(address = "吉林", age = 30, name = "张同学")

    println(getSum2(2, 3, 5, 6, 7))


  }

}
